const fs = require('fs');

const data = fs.readdirSync('./');
// 修改过滤条件，同时包含 .png 和 .svg 文件
const images = data.filter(file => /\.(png|svg)$/.test(file));
// 修改正则表达式，以正确处理两种格式的文件扩展名
const previous = images.map(file => file.replace(/(@\dx)?\.(png|svg)/, '').replace(/-/g, '_'));
const uniq = [...new Set(previous)];

// 生成index.ts内容
const imp = uniq.reduce((pre, cur) => {
  // 查找对应的文件名（考虑可能有多个不同格式但名称相同的文件）
  const matchedFile = images.find(
    file => file.replace(/(@\dx)?\.(png|svg)/, '').replace(/-/g, '_') === cur
  );
  // 确保使用原始文件名（包含连字符和正确的扩展名）
  const originalFileName = matchedFile.replace(/(@\dx)?/, '');
  return pre + `const ${cur} = require('./${originalFileName}');\n`;
}, '');
const exp = `\nexport default { ${uniq.join(', ')} };`;

// 生成index.d.ts内容
const typeDeclarations = `interface ImageAssets {
${uniq.map(name => `  ${name}: string;`).join('\n')}
}

declare const _default: ImageAssets;

export default _default;`;

// 写入文件
fs.writeFileSync('./index.ts', imp + exp);
fs.writeFileSync('./index.d.ts', typeDeclarations);

console.log('已生成 index.ts 和 index.d.ts 文件，支持 PNG 和 SVG 格式');
